//
//  ZNLRootViewController.swift
//  My_Weibo
//
//  Created by 正能量 on 16/8/13.
//  Copyright © 2016年 正能量. All rights reserved.
//

import UIKit

let cellID = "cellID"


///根视图控制器 其他控制器的基类
class ZNLRootViewController: UIViewController, UITableViewDataSource, UITableViewDelegate,VisitorViewDelegate {
    
    ///标记用户登陆状态
    var userLogin = false
    
    lazy var tableview = UITableView()
    
    //懒加载刷新控件
    lazy var refresh = UIRefreshControl()
    
    lazy var pullUpView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
    
    //暴露出来,并且不能使用懒加载
    var visitorView: ZNLVisitorView?
    
    
    //视图生命周期
    override func loadView() {
        //加载tableview  为真加载tableview    假 加载访客视图
        userLogin ? setUpTableView() : setUpVisitorView()
        
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //        tableview.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellID)
        
        
    }
    
    ///刷新加载数据应放在子类
    func loadData() {
        
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
}

/// MARK: - VisitorViewDelegate
extension ZNLRootViewController {
    func visitorViewDidLogin() {
        print("zhuce")
    }
    
    func visitorViewDidRegister() {
        print("login")
    }
}

extension ZNLRootViewController {
    
    //加载访客视图
    private func setUpVisitorView() {
        visitorView = ZNLVisitorView()
        
        view = visitorView
        
        visitorView?.delegate = self
        
        //设置状态栏按钮
        navigationItem.leftBarButtonItem = UIBarButtonItem(
            title: "注册",
            style: .Plain,
            target: self,
            action: #selector(ZNLRootViewController.visitorViewDidRegister))
        
        navigationItem.rightBarButtonItem = UIBarButtonItem(
            title: "登陆",
            style: .Plain,
            target: self,
            action: #selector(ZNLRootViewController.visitorViewDidLogin))
    }
    
    // 设置tableView分开写 则不会出现刷新控件
    private func setUpTableView() {
        view = tableview
        
        tableview.dataSource = self
        tableview.delegate = self
    }
    
    func setUpRefresh() {
        //添加刷新控件
        tableview.addSubview(refresh)
        
        refresh.addTarget(self, action: #selector(ZNLRootViewController.loadData), forControlEvents: .ValueChanged)
        
        //设置刷新视图
        tableview.tableFooterView = pullUpView
    }
}

/// MARK - 数据源方法
extension ZNLRootViewController {
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        
        return UITableViewCell()
    }
    
    //                                        将要显示的cell
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        
        let section = tableview.numberOfSections - 1
        
        let row = tableview.numberOfRowsInSection(section) - 1
        //              最后一组            最后一行                   没有其他刷新
        if section == indexPath.section && row == indexPath.row && !pullUpView.isAnimating() {
            print("上拉刷新")
            //启动菊花
            pullUpView.startAnimating()
            
            //加载数据
            loadData()
        }
        
    }
}
